Today, programs have become more and more complex; they comprise a high number of instructions, and cannot be developed by a single program designer. Generally, they are developed by a designer group wherein each person is in charge of writing a piece of the program, which is called part or module.
The configuration operation of the program consists in assembling the program pieces in order to produce a coherent and consistent program either to deliver a new function or to correct some defects from the previous delivery or release.
This operation is an important activity in program development, and it is performed at the latest stage, just prior to the final delivery or release. Configuring or re-configuring is triggered by the need either to deliver a new function or to correct some defects in the current release.
A change which may be required to create functions, correct a defect or modify a function is requested by a change originator who generally has no means to control whether his requested change has actually been implemented, or not.
The change is made by the owner of the module, i.e the program designer responsible for developing the module, without any relation to a specific functional update or defect correction.
A system administrator sets up a list of modules to be integrated in a new configuration, by hand and from his best judgement. It results therefrom, that some pieces can be missed. This lack appears either at compiling or linking time or at testing time or even after delivery to the customer, which is a major drawback. Furthermore, the process is lengthy and lacks accountability.